package com.hanson.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.hanson.mapper.GoodsTbMapper;
import com.hanson.pojo.vo.GoodsTb;
import com.hanson.service.IGoodsTbService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.io.Serializable;

/**
 * <p>
 * 商品信息存储表 服务实现类
 * </p>
 *
 * @author HansonLee
 * @since 2021-01-08
 */

@Slf4j
@Service
public class GoodsTbServiceImpl extends ServiceImpl<GoodsTbMapper, GoodsTb> implements IGoodsTbService {

    @Resource
    private GoodsTbMapper goodsTbMapper;

    /**
     *
     * 分页查询goodsTb
     *
     * @param condition    数据筛选条件
     * @param page      分页对象
     * @return {@link Page< GoodsTb>}      传进来的分页对象，封装了查询数据结果集
     * @author HansonLee
     * @date 2021-01-08
     **/
    @Override
    public Page<GoodsTb> list(String condition, Page<GoodsTb> page) {
        QueryWrapper<GoodsTb> wrapper = new QueryWrapper<GoodsTb>();
        GoodsTb goodsTb = new GoodsTb();
        //↓↓↓↓↓↓↓↓为GoodsTb查询对象设置条件set condition↓↓↓↓↓↓↓↓

        //↑↑↑↑↑↑↑↑为GoodsTb查询对象设置条件set condition↑↑↑↑↑↑↑↑
        wrapper.setEntity(goodsTb);
        return super.page(page,wrapper);
    }

    /**
     *
     * 添加新goodsTb
     *
     * @param goodsTb      需要添加的goodsTb
     * @return {@link Object}
     * @author HansonLee
     * @date 2021-01-08
     **/
    @Override
    public Object add(GoodsTb goodsTb) {
        return super.save(goodsTb);
    }

    /**
     *
     * 根据条件更新goodsTb
     *
     * @param condition     新数据以及更新条件，使用goodsTb实体类封装
     * @return {@link Object}
     * @author HansonLee
     * @date 2021-01-08
    **/
    @Override
    public Object update(GoodsTb condition) {
        //条件封装类
        UpdateWrapper<GoodsTb> wrapper = new UpdateWrapper<GoodsTb>();
        wrapper.setEntity(condition);
        //封装更新条件，wrapper.eq(String column,Object value),column表示数据库字段，value是字段对应的值

        return super.update(condition,wrapper);
    }

    /**
     *
     * 根据条件删除goodsTb
     *
     * @param condition     删除条件，使用goodsTb实体类封装
     * @return {@link Object}
     * @author HansonLee
     * @date 2021-01-08
     **/
    @Override
    public Object delete(GoodsTb condition) {
        //条件封装类
        UpdateWrapper<GoodsTb> wrapper = new UpdateWrapper<GoodsTb>();
        wrapper.setEntity(condition);
        //封装删除条件，wrapper.eq(String column,Object value),column表示数据库字段，value是字段对应的值

        return super.remove(wrapper);
    }

    /**
     *
     * 根据id删除goodsTb
     *
     * @param id     删除条件，需要删除的id
     * @return {@link Object}
     * @author HansonLee
     * @date 2021-01-08
     **/
    @Override
    public Object deleteById(Serializable id) {
        return super.removeById(id);
    }
}
